public class JDBCUtil {

    //将可以变的数据，全部写在配置文件中
    private static String ur ="";
    private static String driver ="";
    private static String username = "";
    private static String password="";

    static {
        try {

            //读取配置文件也只读一次
            Properties  pro = new Properties();   //有一个方法 load 可以加载数据  getProperty()获取数据
            //加载配置文件，并且读取配置文件中的数据
            URL url = JDBCUtil.class.getClassLoader().getResource("db.properties");  //获取类加载器读取配置文件
            String path = url.getPath();  //获取配置文件的路径（动态的）
            pro.load(new FileReader(path));  // 把配置文件中的数据加载到Properties集合对象中
            System.out.println(pro);

           /* InputStream inputStream = Object.class.getClassLoader().getResourceAsStream("db.properties");
            pro.load(inputStream);
            System.out.println(pro);*/
            //给静态数据设置值
            ur = pro.getProperty("jdbc.url");
            driver = pro.getProperty("jdbc.driver");
            username = pro.getProperty("jdbc.user");
            password = pro.getProperty("jdbc.password");

            Class.forName(driver);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     */
    public static Connection getConnection(){
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(ur, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }


    /**
     * 释放连接
     * 释放的对象有可能有2个(Statement  Connection)，也可能有3个（查询ResultSet）
     */

    public static void  close(ResultSet rs , Statement stmt ,Connection connection){
        if(rs != null){
            try {
                rs.close();
                System.out.println("ResultSet 已经关闭了");
                // int i = 100/0;  //抛除0异常
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                if(stmt != null){
                    try {
                        stmt.close();
                        System.out.println("Statement 已经关闭了");
                        //int i = 100/0;  //抛除0异常
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }finally {
                        if(connection != null){
                            try {
                                connection.close();
                                System.out.println("Connection 已经关闭了");
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }
    }

    @Test
    public void  closeTest(){
        Connection connection = JDBCUtil.getConnection();
        System.out.println(connection);
    }

}